/**
 * 类型保护
 * 逻辑条件语句
 * 特定的一些关键字
 * typeof instanceof in
 */

{
  function fn(a: number | string) {
    // a.substring(1,2)
    if (typeof a === 'string') {
      a.substring(1);
    } else {
      a.toFixed(1);
    }
  }

  /**
   * 自定义类型保护
   * 
   */
  function eachEle(data: any): data is Element[] | NodeList {
    return data.forEach !== undefined;
  }

  function fn2(ele: Element[] | NodeList | Element) {
    if (eachEle(ele)) {
      ele.forEach((item: Element) => {
        console.log(item);
      })
    } else {
      console.log(ele);
    }
  }
}